import Validator from "@/utils/Validator";
function replaceObj(key, value, obj) {
  console.log(obj);
  if (key in obj) {
    obj[key] = value;
  }
  console.log(obj);
  return obj;
}
/**
 * 解除 store 状态传递
 * @param {*} row
 * @returns
 */
function freeStore(row) {
  let str = JSON.stringify(row);
  return JSON.parse(str);
}

/**
 * 分组
 */
function groupBy(array, key) {
  return array.reduce((result, currentItem) => {
    // 获取用于分组的键的值
    const keyValue = currentItem[key];

    // 如果结果对象中还没有这个键的数组，则创建一个新数组
    if (!result[keyValue]) {
      result[keyValue] = [];
    }

    // 将当前项添加到对应的数组中
    result[keyValue].push(currentItem);

    return result;
  }, {}); // 使用空对象作为初始值
}
/**
 * 转化为数组
 */
function groupByToArray(array, key) {
  // 使用reduce方法进行分组，但这次累积器是一个对象，便于检索和存储
  const group = array.reduce((result, currentItem) => {
    // 获取当前项的键值，用作分组的依据
    const keyValue = currentItem[key];

    // 如果这个键值还没有对应的组，则初始化一个
    if (!result[keyValue]) {
      result[keyValue] = [];
    }

    // 将当前项添加到对应键值的数组中
    result[keyValue].push(currentItem);

    return result;
  }, {});

  // 将分组的对象转换为数组格式
  return Object.keys(group).map(groupName => {
    return {
      key: groupName,
      data: group[groupName]
    };
  });
}

function generate(prefix,len) {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  let randomId = '';

  for (let i = 0; i < len; i++) {
      const randomIndex = Math.floor(Math.random() * characters.length);
      randomId += characters.charAt(randomIndex);
  }

  return prefix+randomId;
}



export default {
  replaceObj,
  freeStore,
  groupBy,
  groupByToArray,
  generate
};
